<?PHP
function ZipUpload($filename = 'upload.zip', $eachdir = 'resty')
{
    $zip = new ZipArchive();
    if ($zip->open($filename, ZIPARCHIVE::CREATE) !== TRUE) {
        exit("无法创建 <$filename>\n");
    }
    $files = listdir($eachdir);
    foreach ($files as $path) {
        $zip->addFile($path, str_replace("./", "", str_replace("\\", "/", $path)));
    }
    $zip->close();
    return $zip->numFiles;
}

/*
 * 遍历目录
 */
function eachFile($start_dir)
{
    $files = array();
    if (is_dir($start_dir)) {
        $fh = opendir($start_dir);
        while (($file = readdir($fh)) !== false) {
            if (strcmp($file, '.') == 0 || strcmp($file, '..') == 0) continue;
            $filepath = $start_dir . '/' . $file;
            if (is_dir($filepath))
                $files = array_merge($files, listdir($filepath));
            else
                array_push($files, $filepath);
        }
        closedir($fh);
    } else {
        $files = false;
    }
    return $files;
}

/*
 * 不同概率的抽奖原理就是把0到*（比重总数）的区间分块
 * 分块的依据是物品占整个的比重，再根据随机数种子来产生0-* 中的某个数
 * 判断这个数是落在哪个区间上，区间对应的就是抽到的那个物品。
 * 随机数理论上是概率均等的，那么相应的区间所含数的多少就体现了抽奖物品概率的不同。
 */
function get_rand($proArr)
{
    $result = array();
    foreach ($proArr as $key => $val) {
        $arr[$key] = $val['v'];
    }
    $proSum = array_sum($arr);      // 计算总权重
    $randNum = mt_rand(1, $proSum);
    $d1 = 0;
    $d2 = 0;
    for ($i = 0; $i < count($arr); $i++) {
        $d2 += $arr[$i];
        if ($i == 0) {
            $d1 = 0;
        } else {
            $d1 += $arr[$i - 1];
        }
        if ($randNum >= $d1 && $randNum <= $d2) {
            $result = $proArr[$i];
        }
    }
    unset ($arr);
    return $result;
}

/**
 * 返回状态信息
 * @param int $code
 * @param string $message
 * @param null $data
 * @return string
 */
function returnMsgToJson($data = null, $code = 200, $message = 'success')
{
    $result['code'] = $code == '' ? 200 : $code;
    $result['message'] = $message == '' ? 'success' : $message;
    $result['data'] = $data;
    return response(
        \GuzzleHttp\json_encode($result),
        $result['code'],
        [
            'content-type' => 'application/json',
            'accept' => 'application/json',
        ]);
}

/*
* 使用较多的为这个方法
*/
function get_rand1($proArr)
{
    $result = array();
    foreach ($proArr as $key => $val) {
        $arr[$key] = $val['v'];
    }
    // 概率数组的总概率
    $proSum = array_sum($arr);
    asort($arr);
    // 概率数组循环
    foreach ($arr as $k => $v) {
        $randNum = mt_rand(1, $proSum);
        if ($randNum <= $v) {
            $result = $proArr[$k];
            break;
        } else {
            $proSum -= $v;
        }
    }
    return $result;
}

/**
 * 数组根据键名去重
 * @param $array
 * @param $key
 * @return array
 */
function array_unique_key($array, $key)
{
    $arr = [];
    foreach ($array as $item => $value) {
        if (!in_array($key, $arr)) {
            $arr[$item] = $array[$item];
        }
    }
    return $arr;
}

function csv_read($url)
{

    $file = fopen($url, 'r');
    while ($data = fgetcsv($file)) {
        $goods_list = $data;
    }
    fclose($file);
    return $goods_list;
}

?>